home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 2004 #6
/
Amiga Plus CD - 2004 - No. 06.iso
/
AmiSoft
/
Util
/
libs
/
ExtraLib.lha
/
Extra
/
include
/
rhosigma
/
extradefs.i
< prev
next >
Wrap
Text File
|
2004-05-30
|
17KB
|
379 lines
; ___________________________________________________________________________
; |*************************************************************************|
; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
; |*| Set TAB to 15 for best readable file layout. |*| HiSoft DevPac 3.04 |*|
; |*|______________________________________________|*|____________________|*|
; |*************************************************************************|
; |*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|*|
; |*| |*| $Id: extradefs.i (30.05.04) |*|
; |*| ###### ###### |*| RhoSigma Source based on NDK 3.1 Includes 40.15 |*|
; |*| ## ## ## # |*| _________________________________________________ |*|
; |*| ## ## ## |*| |*|
; |*| ###### ## |*| The public assembler defines for extra.library |*|
; |*| ## ## |*| |*|
; |*| ## ## # |*| ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |*|
; |*| ## ###### |*| Copyright © 1998-2004 RhoSigma, Roland Heyder |*|
; |*| |*| All Rights Reserved. |*|
; |*|_______________|*|___________________________________________________|*|
; |*************************************************************************|
; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
IFND RHOSIGMA_EXTRADEFS_I
RHOSIGMA_EXTRADEFS_I SET 1
IFND EXEC_TYPES_I
INCLUDE exec/types.i
ENDC
IFND EXEC_LIBRARIES_I
INCLUDE exec/libraries.i
ENDC
IFND EXEC_ALERTS_I
INCLUDE exec/alerts.i
ENDC
;---------- die BufInfoBlock-Struktur von »BufInfo()« -----------------------
STRUCTURE BIBStruct,0
APTR bib_OwnerID ; Task (TCB), der diesen Puffer öffnete
ULONG bib_MaxSize ; momentane Größe des Datenbereichs in Byte
ULONG bib_FreeSize ; davon momentan noch unbenutzt
APTR bib_DataStart ; Adresse des gegenwärtigen Datenbereichs
ULONG bib_CurPos ; aktuelle Cursorposition (Zählbeginn=0 !!)
ULONG bib_EndPos ; aktuelle Anfügeposition (Zählbeginn=0 !!)
APTR bib_LastFind ; Zeiger auf zuletzt gesuchte Daten od. 0-PTR
ULONG bib_FindSize ; die Länge obiger Such-Daten oder null
ULONG bib_KeyNum ; der Schlüssel der o.g. Such-Daten oder -1
;-------------------------------- neu ab v2.062
ULONG bib_DataMemType ; Speicherflags (MEMF_...) des Datenbereichs
;----------------------------------------------
LABEL bib_SizeOf
;---------- Modes für »SeekBuf()« -------------------------------------------
SKM_Current = 0 ; Positionierung relativ zur gegenwärtigen CurPos
SKM_Start = 1 ; Positionierung relativ zum Pufferanfang
SKM_End = 2 ; Positionierung relativ zum Pufferende
SKM_Bookmark = 3 ; »Position« = Nummer der gewünschten Bookmark
;---------- die Parameter-Struktur für »UnpackByteRun1()« -------------------
STRUCTURE UnpackParam,0
APTR up_InBuf ; Zeiger auf die gepackten Daten
ULONG up_InLen ; die Größe des gepackten Bereichs in Byte
ULONG up_Private ; beim ersten Aufruf unbedingt auf 0 setzen
LABEL up_SizeOf
;---------- Styles, Masken u. Flags für »SpecTextPrefs()« -------------------
;** Styles **
STS_Plain = 0 ; normaler Text \
STS_Underline = 1 ; unterstrichener Text | können durch Addition oder
STS_Bold = 2 ; fettgedruckter Text | log. ODER kombiniert werden
STS_Italic = 4 ; kursiver Text /
;** Masken **
STM_Normal = %00000000 ; keine Umrandung, d.h. normale Textausgabe
STM_Outline = %11111111 ; volle Umrandung
STM_Shadow = %00011100 ; Schatten unten/rechts sichtbar
STM_Ghost = %11000001 ; dies wirkt am besten, wenn Sie als »MPen«
; die selbe Farbe verwenden, wie der Hinter-
; grund hat
;** Flags **
BITDEF ST,FJAM2,0 ; Normalerweise benutzt »SpecText()« den DrawMode JAM1,
; mit diesem Flag wird jedoch JAM2 erzwungen.
BITDEF ST,AP2MP,1 ; immer der gerade eingestellte »APen« des RastPorts
; soll als »MainPen« (MPen) verwendet werden
BITDEF ST,BP2TL,2 ; immer der gerade eingestellte »BPen« des RastPorts
; soll als »TopLeftPen« (TLPen) verwendet werden
BITDEF ST,OP2BR,3 ; immer der gerade eingestellte »OPen« des RastPorts
; soll als »BottomRightPen« (BRPen) verwendet werden
BITDEF ST,PSWAP,4 ; vertauscht »TLPen« u. »BRPen«, d.h. »TLPen« wird für
; un./re. und »BRPen« für ob./li. verwendet
; Die folgenden Flags haben keinen Einfluß auf die Arbeitsweise der Funk-
; tion »SpecText()«. Sie dienen nur dazu, »SpecTextPrefs()« mitzuteilen,
; welche Parameter neu eingestellt werden sollen. Damit soll überflüssiges
; Register-retten verhindert werden, da Sie nicht jedem Register, welches
; von »SpecTextPrefs()« erwartet wird, zwangsläufig einen sinnvollen Wert
; zuweisen müssen. Wenn Sie z.B. mit D0-D5 irgendwelche Berechnungen machen,
; oder sie als Schleifenzähler benutzen, und wollen dann den »MPen« ver-
; ändern, dann brauchen Sie nur D0 mit diesem zu initialisieren und D5 das
; entsprechende Flag (STF_CMPEN) zuweisen, während Sie sich um D1-D4 nicht
; sorgen müssen, da diese bei jenem Aufruf vollkommen unberührt und unver-
; ändert bleiben, d.h. sie müssen weder gerettet noch initialisiert werden.
;
; ACHTUNG: Wenn keines der folgenden Flags angegeben wird, dann heißt das
; ¯¯¯¯¯¯¯¯ nicht, daß KEIN Wert geändert werden soll, sondern daß ALLE Werte
; zu ändern sind !! (In diesem Falle müssen dann logischer Weise
; auch alle Register initialisiert werden.)
BITDEF ST,CMPEN,10 ; Nur den »MPen« auf den angegebenen Wert ändern.
BITDEF ST,TLPEN,11 ; Nur den »TLPen« auf den angegebenen Wert ändern.
BITDEF ST,BRPEN,12 ; Nur den »BRPen« auf den angegebenen Wert ändern.
BITDEF ST,STYLE,13 ; Nur den SoftStyle auf den angegebenen Wert ändern.
BITDEF ST,CMASK,14 ; Nur die Maske auf den angegebenen Wert ändern.
BITDEF ST,FLAGS,15 ; Nur die Flags auf den angegebenen Wert ändern.
; Es können auch alle Kombinationen der obigen Flags angegeben werden. Die
; Funktion »SpecTextPrefs()« wird dann alles das, was Sie wünschen, ändern.
;---------- Fehlernummern von »LastError()« ---------------------------------
NoError = 0 ; bis jetzt ist kein Fehler aufgetreten
;** DBS-Funktionen **
BufInvalid = 10 ; die angegebene Adresse war kein BufHandle
NotOwner = 11 ; nur der Task, der den Puffer öffnete, darf ihn auch wieder schließen
NoBufMemory = 12 ; nicht mehr genügend Speicher frei (MEMF_... s.a. bib_DataMemType)
NoDOSProcess = 13 ; die aufrufende Anwendung war kein DOS-Prozess
IoErrRequired = 14 ; ein DOS-Error ist aufgetreten (»IoErr()« der dos.library aufrufen)
SeekBadMode = 15 ; der angegebene »SeekMode« ist unbekannt
SeekOffsetErr = 16 ; gewünschte »Position« unter-/überschreitet den Pufferanfang bzw. das Pufferende
NoFindMem = 17 ; kein Speicher für Zwischenspeicherung der zu suchenden Daten (MEMF_PUBLIC)
FindTooLong = 18 ; von CurPos bis EndPos bzw. Pufferanfang sind nur noch weniger Daten, als gesucht werden sollen
NoFindAvail = 19 ; für »FindNext()/FindPrev()« ist mindestens ein »FindData()« erforderlich (gilt für jeden möglichen Schlüssel)
InvalidKey = 20 ; ein angegebener Schlüssel liegt außerhalb des gültigen Bereichs (bei Find-Funktionen max. 8 (0-7) / bei Bookmarks max. 16 (0-15))
MarkNotSet = 21 ; die angegebene Bookmark ist noch nicht gesetzt
MarkCleared = 22 ; die Daten an der angegebenen Bookmark wurden durch »Clear()« gelöscht
;** StringToLong() **
ResultValid = 30 ; alles in Ordnung (das Ergebnis ist gültig)
InvalidChar = 31 ; im String wurde ein illegales Zeichen gefunden
Overflow = 32 ; repräsentierte Zahl wäre größer als 32 Bit (LONG)
;** FillMem() **
OddAddress = 35 ; ungerade Startadresse bei WORD- oder LONG-Modus
NotFilled = 36 ; keine Füllung wegen Abrundung (Bereich zu klein, um wenigstens 1 Wert aufzunehmen)
;** ShowMsg() **
BadHeight = 40 ; angegebene Höhe war größer als 200 Videozeilen
NoStructMem = 41 ; kein Speicher für benötigte Gfx-Strukturen (MEMF_ANY)
NoChipMemory = 42 ; nicht genügend Speicher für die BitPlanes (MEMF_CHIP)
SpecTextErr = 43 ; die Funktion »SpecText()« hat einen Fehler gemeldet
;---------- die Basis-Struktur der extra.library ----------------------------
STRUCTURE XtraBase,LIB_SIZE ; standardmäßige Library-Struktur
APTR xb_Copyright ; ein einzeiliger Copyrightvermerk(+0)
STRUCT xb_Private,54 ; privater Datenbereich der Library
LABEL xb_SizeOf ; Größe der Struktur in Bytes
;---------- von der extra.library erzeugte Alert's --------------------------
EL_AlertD = AT_DeadEnd!AN_Unknown
EL_AlertR = AT_Recovery!AN_Unknown
; Typen-Kennungen der extra.library ($B5000000=DeadEnd/$35000000=Recovery)
EL_NoDfo = EL_AlertD!AG_OpenLib!AO_DiskfontLib
; konnte diskfont.library V33+ (bzw. V36+ für CGX-Version) nicht öffnen ($B503800B)
EL_NoDOS = EL_AlertD!AG_OpenLib!AO_DOSLib
; konnte dos.library V33+ (bzw. V36+ für CGX-Version) nicht öffnen ($B5038007)
EL_NoGfx = EL_AlertD!AG_OpenLib!AO_GraphicsLib
; konnte graphics.library V33+ (bzw. V36+ für CGX-Version) nicht öffnen ($B5038002)
EL_NoInt = EL_AlertD!AG_OpenLib!AO_Intuition
; konnte intuition.library V33+ (bzw. V36+ für CGX-Version) nicht öffnen ($B5038004)
EL_NoMath = EL_AlertD!AG_OpenLib!AO_MathLib
; konnte mathtrans.library V33+ oder
; konnte mathieeesingbas.library V33+ oder
; konnte mathieeedoubbas.library V33+ nicht öffnen ($B5038005)
EL_Trespassed = EL_AlertD!AG_IOError!AO_Unknown
; Task hat Library benutzt, ohne sie vorher zu öffnen ($B5068035)
;---------- mit extra.library verwendbare Macros (s.a. extra_lib.i) ---------
SMTPOS_C EQU -1 ; Text zentrieren
SMTPOS_L EQU -2 ; Text linksbündig
SMTPOS_R EQU -3 ; Text rechtsbündig
;*** extra.library / SMCOLOR() ***
;============================================================================
; Dieses Macro erstellt einen Farbeintrag für die optional anzugebende Farb-
; tabelle für die Funktion »ShowMsg()«.
;----------------------------------------------------------------------------
; Definiert: extradefs.i (Copyright © 1998-2004 RhoSigma, Roland Heyder)
;
; Schablone: Pen/A/N, Red/A/N, Green/A/N, Blue/A/N, END/K/S
;
; Parameter: Pen --> Nr. des zu ändernden Farbstiftes (3-15)
; (0-2 sind reserviert u. werden ignoriert)
;
; Red --> Rot-Anteil der neuen Farbe (0-15)
; Green --> Grün-Anteil der neuen Farbe (0-15)
; Blue --> Blau-Anteil der neuen Farbe (0-15)
;
; END --> Wird dieses Schlüsselwort angegeben, dann endet die
; Farbtabelle an dieser Stelle, anderenfalls muß ein
; weiterer Farbeintrag (Macro-Aufruf) folgen.
;
; Bemerkung: Ein Beispiel für die Benutzung dieses Macros finden Sie in der
; Datei »demo/ShowMsgDemo.ASM«.
;
; Siehe auch: »SMTEXTP()«, »SMTEXT()«, »ShowMsg()«
;============================================================================
SMCOLOR MACRO ;(Pen/A/N, Red/A/N, Green/A/N, Blue/A/N, END/K/S)
;-------------------------------------------------------------
dc.b \1
SMc\@ = \2*256+\3*16+\4 ; RGB4 berechnen
dc.b SMc\@>>8,SMc\@&255
IFNC '\5','END'
dc.b 1 ; noch eine Farbe
ELSEIF
dc.b 0 ; Ende der Farbtabelle
ENDC
;-------------------------------------------------------------
ENDM ;SMCOLOR
;*** extra.library / SMTEXTP() ***
;============================================================================
; Dieses Macro erstellt einen Teilstring des Parameterstrings der Funktion
; »ShowMsg()« inclusive der gewünschten Einstellungen für die Textausgabe.
; Wahlweise kann der Text automatisch zentriert, oder links- bzw. rechtsbündig
; ausgerichtet werden.
;----------------------------------------------------------------------------
; Definiert: extradefs.i (Copyright © 1998-2004 RhoSigma, Roland Heyder)
;
; Schablone: xPos/A/N, yPos/A/N, MPen/A/N, TLPen/A/N, BRPen/A/N, Style/A/N,
; Mask/A/N, Text/A, END/K/S
;
; Parameter: xPos --> x-Position des Textes,
; oder einer der oben definierten SMTPOS-Werte
;
; yPos --> y-Position des Textes,
; Ausrichtung erfolgt an der Oberkante des Fonts
;
; MPen --> gewünschter MainPen \
; TLPen --> gewünschter TopLeftPen |
; BRPen --> gewünschter BottomRightPen | (s. »SpecTextPrefs()«)
; Style --> gewünschter SoftStyle |
; Mask --> gewünschte Randmaske /
;
; Text --> der auszugebende Text selbst,
; in <..>, wenn Leerzeichen enthalten sind
;
; END --> Wird dieses Schlüsselwort angegeben, dann endet der
; Parameterstring an dieser Stelle, anderenfalls muß
; ein weiterer Teilstring (Macro-Aufruf) folgen.
;
; Bemerkung: Dieses Macro sollten Sie nur dann verwenden, wenn Sie für
; diesen Teilstring neue Einstellungen für Farben etc. machen
; wollen. Wenn dieser Teilstring jedoch mit den gleichen Ein-
; stellungen ausgegeben werden soll, wie der vorhergehende bzw.
; Sie die Default-Einstellungen verwenden wollen, dann müssen
; Sie stattdessen das Macro »SMTEXT()« verwenden.
;
; Ein Beispiel für die Benutzung dieses Macros finden Sie in der
; Datei »demo/ShowMsgDemo.ASM«.
;
; Siehe auch: »SMCOLOR()«, »SMTEXT()«, »ShowMsg()«
;============================================================================
SMTEXTP MACRO ;(xPos/A/N, yPos/A/N, MPen/A/N, TLPen/A/N, BRPen/A/N, Style/A/N, Mask/A/N, Text/A, END/K/S)
;-------------------------------------------------------------
IFEQ \1+(-SMTPOS_C)
dc.b SMPz\@>>8,SMPz\@&255 ;X-Pos berechnet (zentriert)
ELSEIF
IFEQ \1+(-SMTPOS_L)
dc.b 0,12 ;X-Pos (linksbündig)
ELSEIF
IFEQ \1+(-SMTPOS_R)
dc.b SMPr\@>>8,SMPr\@&255 ;X-Pos berechnet (rechtsbündig)
ELSEIF
dc.b \1>>8,\1&255 ;angegebene absolute X-Pos
ENDC
ENDC
ENDC
dc.b \2,1,\3,\4,\5,\6,\7 ;Y-Pos u. neue Prefs
SMPs\@ dc.b "\8" ;Text ohne 0-Byte
SMPe\@
SMPl\@ = (SMPe\@-SMPs\@) ;Länge der Zeichenkette
SMPz\@ = (640-(SMPl\@*8))/2 ;X-Pos für Zentrierung
SMPr\@ = (640-(SMPl\@*8))-12 ;X-Pos für rechtsbündig
IFNC '\9','END'
dc.b 0,1 ;Text-0-Byte u. Continue
ELSEIF
dc.b 0,0 ;Text-0-Byte u. ParamEnde
ENDC
;-------------------------------------------------------------
ENDM ;SMTEXTP
;*** extra.library / SMTEXT() ***
;============================================================================
; Dieses Macro erstellt einen Teilstring des Parameterstrings der Funktion
; »ShowMsg()«. Wahlweise kann der Text automatisch zentriert, oder links- bzw.
; rechtsbündig ausgerichtet werden.
;----------------------------------------------------------------------------
; Definiert: extradefs.i (Copyright © 1998-2004 RhoSigma, Roland Heyder)
;
; Schablone: xPos/A/N, yPos/A/N, Text/A, END/K/S
;
; Parameter: xPos --> x-Position des Textes,
; oder einer der oben definierten SMTPOS-Werte
;
; yPos --> y-Position des Textes,
; Ausrichtung erfolgt an der Oberkante des Fonts
;
; Text --> der auszugebende Text selbst,
; in <..>, wenn Leerzeichen enthalten sind
;
; END --> Wird dieses Schlüsselwort angegeben, dann endet der
; Parameterstring an dieser Stelle, anderenfalls muß
; ein weiterer Teilstring (Macro-Aufruf) folgen.
;
; Bemerkung: Dieses Macro sollten Sie nur dann verwenden, wenn Sie für
; diesen Teilstring die gleichen Einstellungen wie für den vor-
; hergehenden Teilstring verwenden wollen. Wenn dieser Teil-
; string jedoch neue Einstellungen für Farben etc. erhalten
; soll, dann müssen Sie stattdessen das Macro »SMTEXTP()« ver-
; wenden.
;
; Ein Beispiel für die Benutzung dieses Macros finden Sie in der
; Datei »demo/ShowMsgDemo.ASM«.
;
; Siehe auch: »SMCOLOR()«, »SMTEXTP()«, »ShowMsg()«
;============================================================================
SMTEXT MACRO ;(xPos/A/N, yPos/A/N, Text/A, END/K/S)
;----------------------------------------------------
IFEQ \1+(-SMTPOS_C)
dc.b SMz\@>>8,SMz\@&255 ;X-Pos berechnet (zentriert)
ELSEIF
IFEQ \1+(-SMTPOS_L)
dc.b 0,12 ;X-Pos (linksbündig)
ELSEIF
IFEQ \1+(-SMTPOS_R)
dc.b SMr\@>>8,SMr\@&255 ;X-Pos berechnet (rechtsbündig)
ELSEIF
dc.b \1>>8,\1&255 ;angegebene absolute X-Pos
ENDC
ENDC
ENDC
dc.b \2,0 ;Y-Pos, keine Prefs
SMs\@ dc.b "\3" ;Text ohne 0-Byte
SMe\@
SMl\@ = (SMe\@-SMs\@) ;Länge der Zeichenkette
SMz\@ = (640-(SMl\@*8))/2 ;X-Pos für Zentrierung
SMr\@ = (640-(SMl\@*8))-12 ;X-Pos für rechtsbündig
IFNC '\4','END'
dc.b 0,1 ;Text-0-Byte u. Continue
ELSEIF
dc.b 0,0 ;Text-0-Byte u. ParamEnde
ENDC
;----------------------------------------------------
ENDM ;SMTEXT
ENDC ;extradefs.i